#include	<system/kernel.h>
#include	<system/libk.h>
#include	<grub.h>

ulong_t	count = 0;
int c = 0;
// Testando IRQs / Consoles
void	timer(regs_t* r)
{
/*	if(((count)%12) == 0)
		kprintf("[PIT count = %d] [console %d]\n", count, console_current());
	if(((count)%36) == 0)
		console_switch(c++);
	if(c > CONSOLE_COUNT)
		c = 0;*/
	count++;
}

uint_t	kmain(ulong_t magic)
{
	disable();
	console_install();

	if(magic != MULTIBOOT_BOOTLOADER_MAGIC)
		return	ERR_MAGIC;

	kbasic_initialize();
	kbasic_paging_setup(2048);	// 2K paginas (8MB da memória) mapeados para o kernel
	kbasic_mm_setup();
	kbasic_idt_setup();	
	disable();
	kbasic_irq_setup(0, timer);
	kbasic_install_safe_keyboard();
	enable();
	for(;;);

	return	ERR_NO_ERROR;
}

//TODO: ira iniciar o kernel, caso haja erro em alguma parte poderá reiniciar a funçao e 
//atraves dos flags saber quem ainda n foi iniciado corretamente causando o erro!
void	kmainprepare(); //depreated
